package com.sec.android.app.myfiles.util.animation;

import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Transformation;

public class AnimateDrawable extends ProxyDrawable {

    private Animation mAnimation;

    private final Transformation mTransformation = new Transformation();

    public AnimateDrawable(Drawable target) {
        super(target);
    }

    public Animation getAnimation() {
        return mAnimation;
    }

    public void setAnimation(Animation anim) {
        mAnimation = anim;
    }

    public boolean hasStarted() {
        return mAnimation != null && mAnimation.hasStarted();
    }

    public boolean hasEnded() {
        return mAnimation == null || mAnimation.hasEnded();
    }

    @Override
    public void draw(Canvas canvas) {
        Drawable dr = getProxy();

        if (dr != null) {
            int sc = canvas.save();
            Animation anim = mAnimation;

            if (anim != null) {
                anim.getTransformation(AnimationUtils.currentAnimationTimeMillis(), mTransformation);
                canvas.concat(mTransformation.getMatrix());
            }

            dr.draw(canvas);
            canvas.restoreToCount(sc);
        }
    }
}
